#pragma once
#include "Video.h"

namespace Reign
{namespace Video
{namespace D3D10
{
	public ref class DepthStencilStateDesc : DepthStencilStateDescI
	{
		#pragma region Properties
		private: D3D10_DEPTH_STENCIL_DESC* desc;
		public: property D3D10_DEPTH_STENCIL_DESC* Desc {D3D10_DEPTH_STENCIL_DESC* get();}
		#pragma endregion

		#pragma region Constructors
		public: DepthStencilStateDesc(DepthStencilStateTypes type);
		public: ~DepthStencilStateDesc();
		private: void null();
		#pragma endregion
	};

	public ref class DepthStencilState : Disposable, DepthStencilStateI
	{
		#pragma region Fields
		private: Video^ video;
		private: ID3D10DepthStencilState* depthStencilState;
		#pragma endregion
	
		#pragma region Constructors
		public: DepthStencilState(DisposableI^ parent, DepthStencilStateDescI^ desc);
		public: ~DepthStencilState();
		private: void null();
		#pragma endregion
		
		#pragma region Methods
		public: virtual void Enable();
		#pragma endregion
	};
}
}
}